<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
	 
	<script>
		// vue2响应式原理， Object.defineProperty 结合订阅与发布模式，通过观察者连接视图与数据
		// Object.defineProperty 劫持对象的getter与setter
		// Object对象 define订阅 Property属性 throw抛出
		var obj = {_age:18};
		Object.defineProperty(obj,"age",{
			// 当获取age的值时候执行get方法
			get(){
				return this._age;
			},
			// 当设置设置age的值时候执行set方法
			set(v){
				if(v>200||v<1||isNaN(v)){
					throw "年龄设置错误"
				}else{
					this._age = v;
				}
			}
		})
	</script>
	</body>
</html>
